@@ -488,7 +488,7 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): |
||
488 | 488 |
|
489 | 489 |
try: |
490 | 490 |
maintenance = MaintenancemanInfo.objects.get(brand_id=brand_id, user_id=self.user_id, status=True) |
491 |
- except SaleclerkInfo.DoesNotExist: |
|
491 |
+ except: |
|
492 | 492 |
maintenance = {} |
493 | 493 |
|
494 | 494 |
maintenance_info = maintenance.data if maintenance else {} |
@@ -0,0 +1,20 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.26 on 2020-06-02 08:50 |
|
3 |
+from __future__ import unicode_literals |
|
4 |
+ |
|
5 |
+from django.db import migrations, models |
|
6 |
+ |
|
7 |
+ |
|
8 |
+class Migration(migrations.Migration): |
|
9 |
+ |
|
10 |
+ dependencies = [ |
|
11 |
+ ('coupon', '0012_auto_20200413_1543'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.AddField( |
|
16 |
+ model_name='usercouponinfo', |
|
17 |
+ name='admin_name', |
|
18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u6838\u9500\u5458\u540d\u79f0', max_length=255, null=True, verbose_name='admin_name'), |
|
19 |
+ ), |
|
20 |
+ ] |
@@ -79,6 +79,7 @@ class UserCouponInfo(BaseModelMixin): |
||
79 | 79 |
|
80 | 80 |
has_used = models.BooleanField(_(u'has_used'), default=False, help_text=u'是否已核销', db_index=True) |
81 | 81 |
admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'核销员唯一标识', db_index=True) |
82 |
+ admin_name = models.CharField(_(u'admin_name'), max_length=255, blank=True, null=True, help_text=u'核销员名称', db_index=True) |
|
82 | 83 |
used_at = models.DateTimeField(_(u'used_at'), blank=True, null=True, help_text=u'维修券核销时间') |
83 | 84 |
is_coupon_admin_writeoff = models.BooleanField(_(u'is_coupon_admin_writeoff'), default=True, help_text=_(u'是否是管理员核销'), db_index=True) |
84 | 85 |
|
@@ -169,6 +170,7 @@ class UserCouponInfo(BaseModelMixin): |
||
169 | 170 |
'has_expired': self.has_expired, |
170 | 171 |
'has_used': self.has_used, |
171 | 172 |
'admin_id': self.admin_id, |
173 |
+ 'admin_name': self.admin_name, |
|
172 | 174 |
'used_at': self.used_at, |
173 | 175 |
'coupon_from': self.activity_name if self.coupon_from == 'PROMOTION' else self.coupon_from, |
174 | 176 |
'clerk_name': self.clerk_name, |
@@ -217,6 +217,21 @@ class RightInfo(BaseModelMixin): |
||
217 | 217 |
'left_num': 3, |
218 | 218 |
'left_tip': 3, |
219 | 219 |
} |
220 |
+ |
|
221 |
+ def maintaindata(self, level): |
|
222 |
+ right_detail = '' |
|
223 |
+ if level == 1: |
|
224 |
+ right_detail = self.level1 if self.level1 else '' |
|
225 |
+ elif level == 2: |
|
226 |
+ right_detail = self.level2 if self.level2 else '' |
|
227 |
+ elif level == 3: |
|
228 |
+ right_detail = self.level3 if self.level3 else '' |
|
229 |
+ elif level == 4: |
|
230 |
+ right_detail = self.level4 if self.level4 else '' |
|
231 |
+ elif level == 5: |
|
232 |
+ right_detail = self.level5 if self.level5 else '' |
|
233 |
+ |
|
234 |
+ return right_detail |
|
220 | 235 |
|
221 | 236 |
|
222 | 237 |
class ShotTypeInfo(BaseModelMixin): |
@@ -131,17 +131,7 @@ def query_userinfo(request): |
||
131 | 131 |
coupons = UserCouponInfo.objects.filter(user_id=user.user_id) |
132 | 132 |
coupons = [coupon.data for coupon in coupons] |
133 | 133 |
|
134 |
- right_detail = '' |
|
135 |
- if user.level == 1: |
|
136 |
- right_detail = right.level1 if right.level1 else '' |
|
137 |
- elif user.level == 2: |
|
138 |
- right_detail = right.level2 if right.level2 else '' |
|
139 |
- elif user.level == 3: |
|
140 |
- right_detail = right.level3 if right.level3 else '' |
|
141 |
- elif user.level == 4: |
|
142 |
- right_detail = right.level4 if right.level4 else '' |
|
143 |
- elif user.level == 5: |
|
144 |
- right_detail = right.level5 if right.level5 else '' |
|
134 |
+ right_detail = right.maintaindata(level=user.level) |
|
145 | 135 |
|
146 | 136 |
return response(200, 'UserInfo Success', u'获取用户信息成功', data={ |
147 | 137 |
'coupons': coupons, |
@@ -17,9 +17,10 @@ from account.models import UserInfo |
||
17 | 17 |
from coupon.models import UserCouponInfo |
18 | 18 |
from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo |
19 | 19 |
from logs.models import MchInfoEncryptLogInfo |
20 |
-from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo |
|
20 |
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo, MaintenancemanInfo |
|
21 | 21 |
from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo, |
22 | 22 |
SaleclerkSaleStatisticInfo, SaleStatisticInfo) |
23 |
+from member.models import RightInfo |
|
23 | 24 |
from utils.error.errno_utils import (CouponStatusCode, ProductBrandStatusCode, ProductDistributorStatusCode, |
24 | 25 |
ProductMachineStatusCode, ProductModelStatusCode, SaleclerkStatusCode) |
25 | 26 |
|
@@ -429,6 +430,7 @@ def clerk_query_coupon(request): |
||
429 | 430 |
brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK) |
430 | 431 |
user_id = request.POST.get('user_id', '') |
431 | 432 |
user_coupon_id = request.POST.get('user_coupon_id', '') |
433 |
+ is_maintenance = int(request.POST.get('is_maintenance', 0)) |
|
432 | 434 |
|
433 | 435 |
try: |
434 | 436 |
user = UserInfo.objects.get(user_id=user_id, status=True) |
@@ -449,17 +451,31 @@ def clerk_query_coupon(request): |
||
449 | 451 |
return response(ProductBrandStatusCode.BRAND_NOT_FOUND) |
450 | 452 |
|
451 | 453 |
try: |
452 |
- clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
453 |
- except SaleclerkInfo.DoesNotExist: |
|
454 |
- return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
455 |
- |
|
456 |
- try: |
|
457 | 454 |
user_coupon = UserCouponInfo.objects.get(user_coupon_id=user_coupon_id) |
458 | 455 |
except UserCouponInfo.DoesNotExist: |
459 | 456 |
return response(CouponStatusCode.COUPON_NOT_FOUND) |
457 |
+ |
|
458 |
+ right_detail = '' |
|
459 |
+ if is_maintenance: |
|
460 |
+ try: |
|
461 |
+ maintenance = MaintenancemanInfo.objects.get(brand_id=brand.brand_id, user_id=user.user_id, status=True) |
|
462 |
+ |
|
463 |
+ # 维修人工费 |
|
464 |
+ right = RightInfo.objects.get(right_id='X457xEV8KVxHQiTvhA7Dtf') |
|
465 |
+ member = UserInfo.objects.get(user_id=user_coupon.user_id) |
|
466 |
+ |
|
467 |
+ right_detail = right.maintaindata(level=member.level) |
|
468 |
+ except: |
|
469 |
+ return response(400001, 'MaintenancemanInfo Not Found', u'维修员不存在') |
|
470 |
+ else: |
|
471 |
+ try: |
|
472 |
+ clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, clerk_phone=user.phone, status=True) |
|
473 |
+ except SaleclerkInfo.DoesNotExist: |
|
474 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
460 | 475 |
|
461 | 476 |
return response(200, data={ |
462 |
- 'user_coupon': user_coupon.data |
|
477 |
+ 'user_coupon': user_coupon.data, |
|
478 |
+ 'right': right_detail |
|
463 | 479 |
}) |
464 | 480 |
|
465 | 481 |
|
@@ -468,6 +484,7 @@ def clerk_writeoff_coupon(request): |
||
468 | 484 |
brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK) |
469 | 485 |
user_id = request.POST.get('user_id', '') |
470 | 486 |
user_coupon_id = request.POST.get('user_coupon_id', '') |
487 |
+ is_maintenance = int(request.POST.get('is_maintenance', 0)) |
|
471 | 488 |
|
472 | 489 |
try: |
473 | 490 |
user = UserInfo.objects.get(user_id=user_id, status=True) |
@@ -486,30 +503,39 @@ def clerk_writeoff_coupon(request): |
||
486 | 503 |
brand = BrandInfo.objects.get(brand_id=brandID) |
487 | 504 |
except BrandInfo.DoesNotExist: |
488 | 505 |
return response(ProductBrandStatusCode.BRAND_NOT_FOUND) |
489 |
- |
|
490 |
- try: |
|
491 |
- clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
492 |
- except SaleclerkInfo.DoesNotExist: |
|
493 |
- return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
494 |
- |
|
506 |
+ |
|
495 | 507 |
try: |
496 | 508 |
user_coupon = UserCouponInfo.objects.get(user_coupon_id=user_coupon_id) |
497 | 509 |
if user_coupon.has_used: |
498 | 510 |
return response(CouponStatusCode.COUPON_HAS_USED) |
499 |
- elif user_coupon.is_coupon_admin_writeoff: |
|
511 |
+ elif user_coupon.is_coupon_admin_writeoff and not is_maintenance: |
|
500 | 512 |
return response(CouponStatusCode.COUPON_PERMISSION_DENIED) |
501 |
- elif not user_coupon.has_expired: |
|
513 |
+ elif user_coupon.has_expired: |
|
514 |
+ return response(CouponStatusCode.COUPON_EXPIRED) |
|
515 |
+ except UserCouponInfo.DoesNotExist: |
|
516 |
+ return response(CouponStatusCode.COUPON_NOT_FOUND) |
|
517 |
+ |
|
518 |
+ user_coupon.has_used = True |
|
519 |
+ user_coupon.used_at = tc.utc_datetime() |
|
520 |
+ |
|
521 |
+ if is_maintenance: |
|
522 |
+ try: |
|
523 |
+ maintenance = MaintenancemanInfo.objects.get(brand_id=brand.brand_id, user_id=user.user_id, status=True) |
|
524 |
+ user_coupon.admin_id = maintenance.maintenance_id |
|
525 |
+ user_coupon.admin_name = maintenance.maintenance_name |
|
526 |
+ user_coupon.save() |
|
527 |
+ except: |
|
528 |
+ return response(400001, 'MaintenancemanInfo Not Found', u'维修员不存在') |
|
529 |
+ else: |
|
530 |
+ try: |
|
531 |
+ clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
502 | 532 |
user_coupon.clerk_id = clerk.clerk_id |
503 | 533 |
user_coupon.clerk_name = clerk.clerk_name |
504 | 534 |
user_coupon.distributor_id = clerk.distributor_id |
505 | 535 |
user_coupon.distributor_name = clerk.distributor_name |
506 |
- user_coupon.has_used = True |
|
507 |
- user_coupon.used_at = tc.utc_datetime() |
|
508 | 536 |
user_coupon.save() |
509 |
- else: |
|
510 |
- return response(CouponStatusCode.COUPON_EXPIRED) |
|
511 |
- except UserCouponInfo.DoesNotExist: |
|
512 |
- return response(CouponStatusCode.COUPON_NOT_FOUND) |
|
537 |
+ except SaleclerkInfo.DoesNotExist: |
|
538 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
513 | 539 |
|
514 | 540 |
return response(200, 'Write Off Coupon Success', u'劵核销成功') |
515 | 541 |
|